﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Specialized;

namespace UOL.PagSeguro {
    public class Cliente {

        private string _nome;
        private string _cep;
        private string _endereco;
        private string _numero;
        private string _complementoEndereco;
        private string _bairro;
        private string _cidade;
        private string _uf;
        private string _pais;
        private int _ddd;
        private int _telefone;
        private string _email;

        #region Propriedades
        /// <summary>
        /// Nome Completo do Cliente
        /// Máximo de Caracteres: 100
        /// </summary>
        public string Nome {
            get { return _nome; }
            set { _nome = value; }
        }

        /// <summary>
        /// CEP do cliente. Oito dígitos, somente números.
        /// Ex: 12345678
        /// Máximo de Caracteres: 8
        /// </summary>
        public string Cep {
            get { return _cep; }
            set { _cep = value; }
        }

        /// <summary>
        /// Logradouro do cliente.
        /// Ex: Rua, Av. etc.
        /// Máximo de Caracteres: 100
        /// </summary>
        public string Endereco {
            get { return _endereco; }
            set { _endereco = value; }
        }

        /// <summary>
        /// Número do imóvel do cliente.
        /// Ex: 265
        /// Máximo de Caracteres: 10
        /// </summary>
        public string Numero {
            get { return _numero; }
            set { _numero = value; }
        }

        /// <summary>
        /// Complemento
        /// Ex: Sala 109 ou Casa 13
        /// Máximo de Caracteres: 100
        /// </summary>
        public string ComplementoEndereco {
            get { return _complementoEndereco; }
            set { _complementoEndereco = value; }
        }

        /// <summary>
        /// Bairro do cliente.
        /// Máximo de Caracteres: 100
        /// </summary>
        public string Bairro {
            get { return _bairro; }
            set { _bairro = value; }
        }

        /// <summary>
        /// Cidade do cliente.
        /// Ex: São Paulo
        /// Máximo de Caracteres: 100
        /// </summary>
        public string Cidade {
            get { return _cidade; }
            set { _cidade = value; }
        }

        /// <summary>
        /// Estado do cliente (sigla).
        /// Ex: SP
        /// Máximo de Caracteres: 2
        /// </summary>
        public string Uf {
            get { return _uf; }
            set { _uf = value; }
        }

        /// <summary>
        /// País do cliente. Por enquanto o PagSeguro só aceita BRA (Brasil). Em breve aceitará outros países.
        /// Valor Padrão: BRA
        /// Máximo de Caracteres: 3
        /// </summary>
        public string Pais {
            get { return _pais; }
            set { _pais = value; }
        }

        /// <summary>
        /// DDD do telefone do cliente. (apenas os 2 números).
        /// Ex: 11
        /// Máximo de Caracteres: 2
        /// </summary>
        public int DDD {
            get { return _ddd; }
            set { _ddd = value; }
        }

        /// <summary>
        /// Telefone Fixo do cliente.
        /// Ex: 12345678
        /// Máximo de Caracteres: 8
        /// </summary>
        public int Telefone {
            get { return _telefone; }
            set { _telefone = value; }
        }

        /// <summary>
        /// E-mail do cliente
        /// Máximo de Caracteres: 200
        /// </summary>
        public string Email {
            get { return _email; }
            set { _email = value; }
        }
        #endregion

        public Cliente() {
            this._pais = "BRA";
        }

        public NameValueCollection GetParametros() {
            NameValueCollection nvc = new NameValueCollection();
            nvc.Add("cliente_nome", this.Nome);
            nvc.Add("cliente_cep", this.Cep);
            nvc.Add("cliente_end", this.Endereco);
            nvc.Add("cliente_num", this.Numero);
            nvc.Add("cliente_compl", this.ComplementoEndereco);
            nvc.Add("cliente_bairro", this.Bairro);
            nvc.Add("cliente_cidade", this.Cidade);
            nvc.Add("cliente_uf", this.Uf);
            nvc.Add("cliente_pais", this.Pais);
            nvc.Add("cliente_ddd", Convert.ToString(this.DDD));
            nvc.Add("cliente_tel", Convert.ToString(this.Telefone));
            nvc.Add("cliente_email", this.Email);
            return nvc;
        }

    }
}
